package string;

/*
        Write a function to find the longest common prefix string amongst an array of strings.

        If there is no common prefix, return an empty string "".

        Example 1:

        Input: ["flower","flow","flight"]
        Output: "fl"
        Example 2:

        Input: ["dog","racecar","car"]
        Output: ""
        Explanation: There is no common prefix among the input strings.
        Note:

        All given inputs are in lowercase letters a-z.
 */
public class CommonPrefix {

    public String longestCommonPrefix(String[] strs) {

        if(strs.length==0){
            return "";
        }

        if(strs.length==1){
            return strs[0];
        }

        boolean cycleFlag = true;
        int i = 0;
        StringBuilder sb = new StringBuilder();

        while(cycleFlag){

            for (String str : strs) {
                if (str.length()==0 || str.length()==i || str.charAt(i)!=strs[0].charAt(i)){
                    cycleFlag = false;
                    break;
                }
            }
            if(cycleFlag){
                sb.append(strs[0].charAt(i));
            }
            i++;
        }

        return sb.toString();
    }

    public String longestCommonPrefix2(String[] strs) {
        if (strs.length == 0)
            return "";
        String prefix = strs[0];
        for (int i = 1; i < strs.length; i++) {
            while (strs[i].indexOf(prefix) != 0) {
                prefix = prefix.substring(0, prefix.length() - 1);
                if (prefix.isEmpty()) return "";
            }
        }
        return prefix;
    }
}
